#include <iostream>
#include <optional>
#include <stack>
#include <string>
using namespace std;
/*
可能是有效子串必须满足下面的性质：
    1.任意前缀中'('的数量 >= '('的数量.
    2.'('数量 == ')'的数量.


*/
int longestValidParentheses(string s) {
  stack<int> st;
  int res = 0;
  for (int i = 0, start = -1; i < s.size(); ++i) {
    if (s[i] == '(') {
      st.push(i);
    } else {
      if (!st.empty()) {
        st.pop();
        if (!st.empty()) {
          res = max(res, i - st.top());
        } else {
          res = max(res, i - start);
        }
      } else {
        start = i;
      }
    }
  }
  return res;
}

int main() {
  string s(")(()(()(((())(((((()()))((((()()(()()())())())()))()()()())(())()()"
           "(((()))))()((()))(((())()((()()())((())))(())))())((()())()()((()(("
           "())))))((()(((((()((()))(()()(())))((()))()))())");
  int len = longestValidParentheses(s);
  cout << len << endl;
  return 0;
}